<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<meta name="viewport" content="width=device-width, initial-scale=1">
	<title></title>
</head>
<body>
	<script type="text/javascript">
		/*
			运算符:
				1.比较运算符
				2.算数运算符
				3.逻辑运算符
				4.赋值运算符
		*/
		/*
			1.比较运算符: 比较两个值的大小,返回一个boolean值，true/false
			 > 大于 
			 < 小于  
			 >= 大于等于 
			 <= 小于等于  
			 == 判断 值 是否相等
			 === 全等于 判断 值 和 类型 是否都相等
			 != 不等于 判断值不等于
		 	 !== 不全等于 判断值和类型不相等

		*/
		console.log('2' == 2) //true
		console.log('2' === 2)//false
		console.log('2' != 2)//false
		console.log('2' !== 2)//true

		/*
			2.逻辑运算符:用于测量变量 或者值之间的关系，返回boolean类型的值
			 && 逻辑与 '且'  都真才真，有假才假
			 || 逻辑或 '或'  有真才真，都假才假
			 ！ 逻辑非     取反			 
		*/
		let a = 4;
		let b = 6;
		let c = 10;
		console.log(a < b && b < c)//true
		console.log(a > b && b < c)//false

		console.log(!0) //true
		console.log(!1) //false
		console.log(!'')//true
		console.log(!null)//true
		console.log(!undefined)//true
		console.log(!NaN)//true

		/*
			3.算数运算符
			+ - * / 
			% 取余
			-- 自减
			++ 自加
		*/
		let num1 = 5;
		let num2 = 3;
		console.log(num1 % num2)//2
		console.log(num1 / num2)//1.6666666666667

		let num3 = true;
		let num4 = false
		let num5 = '2'
		let num6 = null
		let num7 = undefined

		console.log(num1 + num3 )//6
		console.log(name )
		console.log(num1 + num5)//52
		console.log(num5 - num2)//"2" -3 = -1
		console.log(num2 + num6)
		console.log(num5  + num3)//'2' + true = '2true'
		console.log(num3 + num7)//true + undefined = NaN

		/*
			隐式转换:在js的运算中，如果两边的数据类型不一样，这是编译器会自动将两边数据左一个数据类型转换，转成统一的数据类型，不需要手动转换

			1.运算中 null,boolean,纯数字的字符串 都能进行隐式转换 但如果不是纯数字 或者 undefined 都会返回NaN
			2.隐式中 + 比较特殊，碰到字符串之后会直接进行字符串的拼接
			3.隐式转换的规律
				对象----> 字符串-----> 数字 <---- boolean
			4.利用隐式转换 快速进行数据类型转换
				转字符串: + ； + ''
				转数字: - * / %
				转布尔: ! ||
		*/
		console.log([1,2,3] == "1,2,3")//true []转换成了"" -> "1,2,3" == "1,2,3"
		console.log([] == 0)//true []转换成"" ""转成0 0 == 0
		console.log(true == '1')//true
		console.log("Strue" - 1)//NaN
		console.log(1 - undefined)//NaN
		console.log(100 + '')//快速转字符串
		console.log('100' - 0)//快速转数字类型

		// a++ 先用后加  ++a先加后用
		let n1 = 0;
		let n2 = 1;
		//   1(2)     3
		///n1 = n2++ + ++n2
		//   1(2)   1 
		n1 = n2++ + --n2
		console.log(n1 , n2)

		let n3 = 4;
		let n4 = 6;
		let n5 = n3++ + ++n4 - n3-- + --n3
		console.log(n3,n4,n5)

		/*
			4.赋值运算符
				=
				+=
				-+
				*=
				/=
				%=
		*/
		let x = 1;
		let y = 2;
		y += x;//y = y + x = 2 + 1
		y -= x;//y = y - x = 2 - 1
		y *= x;//y = y * x = 2 * 1
		y /= x;//y = y / x = 2 / 1
		y %= x;//y = y % x = 2 % 1
	</script>
</body>
</html>